package com.gxa.learning.pc.service;

import com.github.pagehelper.PageInfo;
import com.gxa.learning.core.pojo.CourseForMain;
import com.gxa.learning.core.pojo.User;
import com.gxa.learning.core.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * @Author ChenJ
 * @date 2021/12/06 15:00
 **/
public interface UserService extends BaseService<User> {

    /**
     * 获取全部学员信息
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> getList(Map<String, Object> map);

    /**
     * 根据name模糊搜索得到数据(如果传递管理员 即获取所有管理员)
     *
     * @param name 模糊查询条件
     * @return 返回查询到的集合
     */
    List<Map<String, Object>> selectByMark(String name);

    /**
     * 根据phone搜索得到数据
     *
     * @param phone 手机号
     * @return 返回查询到的对象
     */
    User selectByPhone(String phone);

    /**
     * 查询对应用户所有培训项目列表
     *
     * @param page          页数
     * @param size          数量
     * @param userId        培训人id
     * @param projectName   培训项目名称
     * @param type          培训项目类型
     * @param projectStatus 培训项目状态 0表示未开始、1表示进行中
     * @return 列表
     * @throws Exception 抛出
     */
    PageInfo<Map<String, Object>> getUserProjectList(Integer page, Integer size, String userId, String projectName, String type, String projectStatus) throws Exception;

    /**
     * 查询当前项目所有课程
     *
     * @param projectId 项目编号
     * @param userId    用户编号
     * @return 列表
     * @throws Exception 抛出
     */
    List<Map<String, Object>> getCourseList(String projectId, String userId) throws Exception;

    /**
     * 获取推荐培训
     *
     * @param
     * @return
     */
    List<Map> getRecommend();

    /**
     * 获取单个推荐培训的详细信息
     *
     * @param id
     * @return
     */
    Map selectDetailRecommend(Long id);

    /**
     * 获取推荐培训评价的分数
     *
     * @param id
     * @return
     */
    Map getCount(Long id);


    /**
     * 获取推荐课程的详细信息
     *
     * @param id
     * @return
     */
    CourseForMain getRecommendCourseDetail(Long id);

    /**
     * 获取单个推荐课程的分数
     *
     * @param id
     * @return
     */
    Map getCourseCount(Long id);

    /**
     * 获取培训项目下的所有课程
     *
     * @param id
     * @return
     */
    List<Map> getCourseInRecommend(Long id);

    /**
     * 获取我的课程(带有搜索功能)
     *
     * @param map
     * @return
     */
    PageInfo<Map> getMyCourse(Map map);

    /**
     * 根据id获取单个学员
     *
     * @param id
     * @return
     */
    Map<String, Object> getOne(Long id);



}
